// 函数相关注意事项
// 返回值 - 下面这个 函数没有返回值，所以返回值类型是 number
function sum1(a: number, b: number): number {
  return a + b;
}

// void - 下面这个函数是没有返回的 不可以return 否则报错
function sum2(a: number, b: number): void {
  console.log(a + b);
}

// never - 下面这个函数是永远不会返回的
function sum3(a: number, b: number): never {
  throw new Error("error");
  // return a + b;
}

// 可选参数 - 在参数名后面加一个问号
function sum4(a: number, b?: number): number {
  if (b) {
    return a + b;
  }
  return a;
}

// 默认参数 - 在参数名后面加一个等号
function sum5(a: number, b: number = 0): number {
  return a + b;
}

// 剩余参数 - 在参数名前面加一个省略号
function sum6(a: number, ...b: number[]): number {
  return a + b.reduce((pre, cur) => pre + cur, 0);
}

// 对象类型参数 - 需要对每个值单独定义数据类型
function sum7({a,b} : {a:number,b:number}) : number{
  return arguments[0].a + arguments[0].b;
}
let res = sum7({a:1,b:2});
console.log(res);